3
I Use This!
Inactive

Commits : Listings

Analyzed 1 day ago. based on code collected 1 day ago.
Sep 02, 2024 — Sep 02, 2025
Commit Message Contributor Files Modified Lines Added Lines Removed Code Location Date
* install.py (scripts): Fix qmtest-remote script. More... about 24 years ago
* qm/platform_win32.py (get_host_name): Fix syntax error. More... about 24 years ago
* qm/test/xmldb.py (DirectorySuite.__ScanDirectory): Construct absolute test IDs. * qm/test/run.py (RemoteShellTarget.__init__): Use arguments property. (TestRun.AddResourceResult): Immediately try to clean up after failed setup. * qm/test/cmdline.py (Command.commands_spec): Put ID in brackets. (Command.__ExecuteRun): Run all tests if none specified. Collect explicit test suites. (Command.__WriteSummary): Print statistics by suite. Supress null output. * share/diagnostics/test.txt (no ids specified): Remove. * doc/qm.mod (PASS): New entity. (FAIL): Likewise. (ERROR): Likewise. (UNTESTED): Likewise. * doc/manual/test-manual.xml: Update and expand. * doc/manual/test-reference.xml: Likewise. * doc/manual/test-tour.xml: Likewise. More... about 24 years ago
* install.py (scripts): Add qmtrack-remote. * qm.spec (files): Likewise. * qm/Makefile.in (SCRIPTS): Likewise. * qm/async.py (Channel.IsOpen): New method. (Multiplexer.Wait): Close channels if connection vanishes. (fork_with_stdio_channel): New function. * qm/test/run.py (Target.EnqueueRunTest): Implement here. (Target.EnqueueSetUpResource): Likewise. (Target.EnqueueCleanUpResource): Likewise. (Target.OnReplyReady): Likewise. (SubprocessTarget): Rename __children to _children and __ready_children to _ready_children. (SubprocessTarget.EnqueueSetUpResource): Likewise. (SubprocessTarget.EnqueueCleanUpResource): Likewise. (SubprocessTarget.OnReplyReady): Likewise. (SubprocessTarget.GetQueueLength): Subtract number of ready children. (SubprocessTarget.OnReplyReady): Use base implementation. (SubprocessTarget.__EnqueueCommand): Rename to... (SubprocessTarget._EnqueueCommand): ... this. (RemoteShellTarget): New class. (_RemoteDemultiplexerTarget): Likewise. (test_run): Read multiple times from channels, if necessary. (_target_spec_from_dom): Fix duplicate variable name. * qm/test/qmtest-remote.in: New file. More... about 24 years ago
* qm/common.py (__host_name): Remove. (get_host_name): Likewise. (shuffle): New function. (sequence_difference): Likewise. * qm/async.py: New file. * qm/web.py (HTTPServer.server_bind): Use platform.get_host_name. * qm/platform_win32.py (get_host_name): New function. (_get_host_name): Likewise. * qm/platform_linux.py (run_program): Fix comment. (get_host_name): New function. More... about 24 years ago
* qm/test/xmldb.py (Database.__ParseResourceDocument): Fix wrong variabel name. More... about 24 years ago
* qm/test/base.py: Rename "action" to "resource" throughout. (InstanceBase.__init__): Add properties parameter (InstanceBase.SetProperty): New method. (InstanceBase.GetProperty): Likewise. (InstanceBase.GetProperties): Likewise. (Test.__init__): Add properties parameter. (Test.GetPrerequisites): Remove absolute parameter. (Test.GetResources): Likewise. (Resource.__init__): Add properties parameter. (Suite.GetTestIds): Assume absolute IDs. (Suite.GetRawTestIds): Likewise. (Suite.GetRawSuiteIds): Likewise. (PrerequisiteMapAdapter.__getitem__): Remove absolute argument. (PrerequisiteMapAdapter.get): Likewise. * qm/test/xmldb.py: Rename "action" to "resource" throughout. (Database.WriteSuite): Assume absolute IDs. (Database.__ParseTestDocument): Load properties. (Database.__ParseResourceDocument): Likewise. (Database.__GetPropertiesFromDomNode): New method. (Database.__MakeDomNodeForItem): Include properties. * qm/test/cmdline.py (Command.unexpected_sorter): Rename "action" to "resource". * qm/test/web/web.py: Rename "action" to "resource" throughout. (DefaultDtmlPage.FormatTestId): Remove relative_to and within parameters. (DefaultDtmlPage.FormatResourceId): Likwise. (DefaultDtmlPage.FormatSuiteId): Remove within parameter. * qm/test/web/dir.py: Rename "action" to "resource" throughout. * qm/test/web/show.py: Likewise. (handle_submit): Handle properties. * qm/test/web/suite.py (ShowPage.FormatSuiteId): Remove. * qm/test/classes/temporary.py: Rename "action" to "resource" throughout. * share/diagnostics/test-help.txt: Likewise. * share/dtml/test/dir.dtml: Likewise. * share/dtml/test/suite.dtml: Likewise. * share/dtml/test/show.dtml: Likewise. Show properties. Adjust formatting. * share/xml/test.dtd: Rename "action" to "resource" throughout. * share/xml/CATALOG: Likewise. * share/xml/action.dtd: Remove. * share/xml/resource.dtd: New file. * share/web/common.js (property_add_or_change): Check if name is valid. * share/web/dtml/test/add-action.dtml: Remove. * share/web/dtml/test/add-resource.dtml: New file. * unit/common/parser_help.qmt: Make IDs absolute. * unit/common/parser_parse.qmt: Likewise. * unit/test/classes/tempdir1.qma: Likewise. * unit/test/classes/tempdir1.qmt: Likewise. * unit/track/export/export1.qmt: Likewise. * unit/track/export/export2.qmt: Likewise. * unit/track/export/idb.qma: Likewise. * unit/track/export/setup_idb.qmt: Likewise. More... about 24 years ago
* qm/track/config.py (setup_idb_for_internal_use): Make description field multiline. (setup_idb_for_test): Likewise. More... about 24 years ago
* qm/track/config.py (open_idb): Fix IDB check. Improve diagnostics. * share/diagnostics/track.txt (idb directory missing): New diagnostic. (idb problem): Likewise. (idb path inaccessible): Likewise. (idb path wrong): Likewise. * share/dtml/track/summary-color-key.dtml: Adjust formatting. More... about 24 years ago
* README: No longer require PyXML. More... about 24 years ago
* PyXML: New imported module. * install.py (packages): Include PyXML dir. * Makefile.in (SUBDIRS): Add PyXML. (PyXML): New rule. * qm/setup_path.py.in: Add PyXML dir to Python path. More... about 24 years ago
* qm/web.py (DtmlPage.__init__): Remove show_decorations parameter. (DtmlPage.GenerateStartBody): Add decorations parameter. (DtmlPage.GenerateEndBody): Likewise. (DtmlPage.MakeSubmitButton): Remove. (DtmlPage.MakeButton): Add css_class parameter. (format_exception): Use DtmlPage.default_class. (make_button_for_request): Add css_class parameter. (make_button_for_url): Likewise. (generate_error_page): Use DtmlPage.default_class. (generate_login_form): Likewise. (make_submit_button): New function. * qm/track/web/web.py (DtmlPage): Split off... (DefaultDtmlPage): ... this base class. (DefaultDtmlPage.GenerateStartBody): Add decorations parameter. (_initialize_module): Use DefaultDtmlPage as default_class. * qm/track/web/summary.py (DisplayOptionsPage.__init__): Remove show_decorations argument. (ColorKeyPage.__init__): Likewise. * qm/track/issue_class.py (StateField.MakePropertyControls): Adjust popup size. * qm/test/web/web.py (DtmlPage): Split off... (DefaultDtmlPage): ... this base class. (__initialize_module): Use DefaultDtmlPage as default_class. * qm/test/web/show.py (ShowPage.MakeCategoriesControl): Remove show_decorations argument. (AddPrerequisitePage.__init__): Likewise. (AddActionPage.__init__): Likewise. * share/web/stylesheets/qm.css (tr.form-submit): New class. (input.submit): Likewise. * share/dtml/field.dtml: Adjust formatting. * share/dtml/problems.dtml: Likewise. * share/dtml/track/summary-display-options.dtml: Likewise. * share/dtml/track/summary-color-key.dtml: Likewise. * share/dtml/track/show.dtml: Likewise. * share/dtml/track/issue-class.dtml: Likewise. * share/dtml/test/suite.dtml: Likewise. * share/dtml/test/add-prerequisite.dtml: Likewise. * share/dtml/test/add-category.dtml: Likewise. * share/dtml/test/add-action.dtml: Likewise. * share/dtml/user.dtml: Likewise. * share/dtml/track/state-model.dtml: Likewise. Add help link. * share/diagnostics/track-help.txt (state model help): New help page. More... about 24 years ago
* qm/web.py (escape): New function. (unescape): Likewise. * qm/fields.py (Field.UpdateFromRequest): Remove debugging output. (EnumerationField.__init__): Handle 'None' default. (EnumerationField.CompareValues): Handle values not among enumerals. (EnumerationField.SetAttribute): Don't muck with the default value. * qm/track/server.py (make_server): Register state-model. * qm/track/qmtrack.in: Handle all other exceptions. * qm/track/issue_class.py (Transition.__init__): Make condition parameter not a list. (Transition.GetConditions): Rename to... (Transition.GetCondition): ... this. (StateField.property_declarations): New attribute. (StateField.__init__): Don't stort state model as object attribute. Call SetStateModel. (StateField.SetStateModel): New method. (StateField.GetStateModel): Use field attribute. (StateField.GetEnumerals): Use GetStateModel. (StateField.FormatValueAsHtml): Handle value not among enumerals. (StateField.MakePropertyControls): New method. (encode_state_model): New function (encode_state): Likewise. (encode_transition): Likewise. (decode_state_model): Likewise. (decode_state): Likewise. (decode_transition): Likewise. (_initialize_module): Reformat descriptions. * qm/track/config.py (__global_lock): Rename to... (_global_lock): ... this. Adjust accordingly throughout. (open_idb): Improve diagnostic. * qm/track/web/issue_class.py (handle_state_model): New. * qm/track/triggers/state.py (Trigger.Preupdate): Handle old state not in state model. Adjust for single condition. * share/web/common.js (popup_box): New function. (label_is_valid): Likewise. (select_item): Likewise. (get_selected_value): Likewise. * share/dtml/track/state-model.dtml: New template. More... about 24 years ago
* share/dtml/attachment.dtml: Use file name if description not specified. More... about 24 years ago
* qm/fields.py (Field.GetHtmlHelp): Don't print field name in smaller font. * qm/structured_text.py (TextFormatter.__init__): Add attributes. (TextFormatter.End): New method. (TextFormatter.StartLink): Implement. (TextFormatter.EndLink): Likewise. (HtmlFormatter.End): New method. (StructuredTextProcessor.__punctuation): Reformat. (StructuredTextProcessor.__verbatim_regex): Accept line-end terminator. (StructuredTextProcessor.__strong_regex): Likewise. (StructuredTextProcessor.__emph_regex): Likewise. (StructuredTextProcessor.__underline_regex): Likewise. (StructuredTextProcessor.__link1_regex): Remove. (StructuredTextProcessor.__link2_regex): Likewise. (StructuredTextProcessor.__link_regex): New attribute. (StructuredTextProcessor.__link_footnote_regex): Likewise. (StructuredTextProcessor.__init__): Add attribute. (StructuredTextProcessor.__call__): Process hyperlink footnotes. (StructuredTextProcessor.End): Call formatter's End method. (StructuredTextProcessor.__WriteText): Rewrite hyperlink processing. * qm/track/web/summary.py (SummaryPage.__init__): Build dictionary map. (SummaryPage.MakeDisplayOptionsButton): Pass field dictionary to DisplayOptionsPage. (SummaryPage.MakeColorKeyButton): Pass fields to ColorKeyPage. (DisplayOptionsPage.__init__): Take field dictionary parameter. (DisplayOptionsPage.GetTitle): Handle IndexError. (ColorKeyPage.__init__): Take field parameters. (_hls_transform): Improve doc string. * share/dtml/track/summary.dtml: Adjust formatting. More... about 24 years ago
* qm/track/web/index.py (handle_index): Make a function. More... about 24 years ago
* qm/fields.py (FieldEditPage.MakeDefaultValueControl): New method. (Field.UpdateFromRequest): Process default value. (TextField.FormatValueAsHtml): Don't escape structured text HTML. (EnumerationField.FormatValueAsHtml): Don't use _GetAvailableEnumerals. (EnumerationField._GetAvailableEnumerals): Remove. * qm/track/issue_class.py (StateField.FormatValueAsHtml): New method. (IssueClass.__init__): Make some more mandatory fields read-only. * share/web/stylesheets/qm.css (th): Make background black. (a#colhead): Likewise. * share/dtml/field.dtml: Add control for default value. More... about 24 years ago
* qm/structured_text.py (TextFormatter.WriteText): Don't print spaces at the start of a line. * qm/common.py (MutexError): New exception. (MutexLockError): Update doc string. (FileSystemMutex.Lock): Raise MutexError. * qm/cmdline.py: Rename "flag" to "option" throughout. * qm/track/server.py (execute): Don't handle CommandError here. * qm/track/qmtrack.in: Use GetIdbPath. Improve diagnostics. * qm/track/config.py (initialize_idb): Improve diagnostics. * qm/track/cmdline.py (Command.force_option_spec): New attribute. (Command.qmtrack_commands): Use it. Change flags for initialize and destroy. (Command.__init__): Fix dispatch map. (Command.GetIdbPath): New method. (Command.Execute): Don't check for missing command here. (Command.__Parse): Do it here instead. (Command.__PerformInitialize): Use GetIdbPath. (Command.__PerformDestroy): Likewise. * share/diagnostics/common.txt (invalid enum value): New diagnostic. (missing command): Rewrite. (unrecognized command): New diagnostic. * share/diagnostics/track.txt (create field error): Fix substitution. (create issue error): Likewise. (create no equals): Likewise. (edit issue error sem): Likewise. (field exist): Likewise. (field set use equal): Likewise. (field set use plus): Likewise. (idb locked): Likewise. Adjust wording. (idb parent directory inaccessible): New diagnostic. (idb parent directory missing): Likewise. (idb path exists): Likewise. (initialize no idb path): Remove. (initialize wrong flag): Likewise. (invalid enum value): Likewise. (join iid error sem): Fix substitution. (join issue error sem): Likewise. (join issue error syn): Likewise. (no idb at path): New diagnostic. (show no iid): Fix substitution. (show wrong args): Likewise. (split issue error sem): Likewise. * doc/manual/track-tour.xml: Update for changes in initialize syntax. More... about 24 years ago
* qm/fields.py (TextField.property_declarations): Rename nonempty to not_empty_text. (TextField.CompareValues): Re-compare strings case-sensitively. (TextField.Validate): Adjust for not_empty_text. (TextField.GetHelp): Likewise. (SetField.set_property_declarations): New attribute. (SetField.__init__): Use it. (SetField.CompareValues): Recompare set contents if they're the same length. (SetField.Validate): Check not_empty_set attribute. * qm/track/issue_class.py (IssueClass.__init__): Use not_empty_text. * qm/track/web/web.py (HistoryPageFragment.FormatRevisionDiff): Use field titles in output. * share/diagnostics/common.txt (empty set field value): New diagnostic. (empty text field value): Likewise. * share/diagnostics/track.txt (empty field value): Remove. More... about 24 years ago
* qm/fields.py (Field.ValuesAreEqual): Rename to... (Field.CompareValues): ... this. (TextField.CompareValues): New method. (TextField.FormatValueAsHtml): Truncate to 80 characters. (SetField.CompareValues): New method. (EnumerationField.CompareValues): Likewise. * qm/web.py (format_color): New function. * qm/track/issue.py (IssueSortPredicate.__init__): Take field as parameter. (IssueSortPredicate.__call__): Use CompareValues. (get_differing_fields): Likewise. (difference_issues): Likewise. * qm/track/web/summary.py (SummaryPage.__init__): Add hue_field_name, lightness_field_name, saturation_field_name parameters. Pass field to IssueSortPredicate. (SummaryPage.MakeDisplayOptionsButton): Pass coloring fields to display options page. (SummaryPage.IsIssueShown): Remove. (SummaryPage.MakeColorKeyButton): New method. (SummaryPage.GetBackgroundColor): Reimplement. (SummaryPage.GetForegroundColor): Remove. (SummaryPage.MakeIssueUrl): Likewise. (DisplayOptionsPage.__init__): Add hue_field_name, lightness_field_name, saturation_field_name parameters. (DisplayOptionsPage.MakeColorableFieldSelect): New method. (ColorKeyPage): New class. (handle_summary): Set up issue coloring. (_color_value_for_enum_field): New function. (_color_value_for_enum): Likewise. (_hls_transform): Likewise. * share/dtml/track/summary.dtml: Add color key button. Don't use IsIssueShown, MakeIssueUrl, GetForegroundColor. * share/dtml/track/summary-display-options.dtml: Add heading and help link. Add controls for coloring. * share/dtml/track/summary-color-key.dtml: New file. * share/diagnostics/track-help.txt (summary display options help): New help message. More... about 24 years ago
* COPYING: Update year. More... about 24 years ago
* qm/web.py (PageInfo): Rename to... (DtmlPage): ... this. (DtmlPage.html_header): Remove. (DtmlPage.html_footer): Likewise. (DtmlPage.table_attributes): Likewise. (DtmlPage.__init__): Remove request parameter. (DtmlPage.__call__): New method. (DtmlPage.FormatStructuredText): Remove. (DtmlPage.MakeUrl): Likewise. (DtmlPage.WebRequest): New method. (DtmlPage.GenerateHtmlHeader): Put application name in title. (DtmlPage.GenerateEndBody): Conditionalize "problems" message. (DtmlPage.MakeSubmitButton): New method. (DtmlPage.MakeUrlButton): Remove. (DtmlPage.MakeHelpLink): Likewise. (DtmlPage.MakeHelpLinkHtml): Likewise. (format_exception): Use DtmlPage. (generate_html_from_dtml): Remove. (generate_error_page): Use DtmlPage. (generate_login_form): Likewise. (make_help_link): Add default for label parameter. (make_help_link_html): Likewise. Use DtmlPage. (make_choose_control): Adjust button spacing. (_handle_problems): Convert to DtmlPage object. (format_user_id): Use DtmlPage. * qm/fields.py: Adjust throughout for DtmlPage. More... about 24 years ago
* doc/qm.mod (iid): New entity. * doc/manual/track-tour.xml: Add "Adding Fields", "Special Features" sections. More... about 24 years ago
* qm/web.py (PageInfo.qm_bug_system_url): Update. * share/dtml/track/navigation-bar.dtml: Adjust URLs. More... about 24 years ago
* qm/track/web/show.py (handle_submit): Handle IssueExistsError. * share/dtml/track/summary.dtml: Top-align issue rows. * share/diagnostics/track.txt (iid already used): New diagnostic. More... about 24 years ago
* qm/fields.py (SetField.__init__): Use contained field property declarations. (SetField.MakePropertyControls): New method. (EnumerationField.property_declarations): New attribute. (EnumerationField.__init__): Change enumeration parameter to enumerals. (EnumerationField.SetAttribute): New method. (EnumerationField.SetEnumerals): Simplify. (EnumerationField.GetEnumerals): Handle empty enumerals. (EnumerationField.MakePropertyControls): New method. * qm/track/issue_class.py (StateField.__init__): Adjust base class initializer call. * qm/track/config.py (setup_idb_for_internal_use): Adjust priority enumerals. (setup_idb_for_test): Adjust severity enumerals. * qm/track/web/issue_class.py (_get_issue_class_for_session): Don't check issue object ID. (handle_show_class): Don't set issue object ID in request. (handle_submit_field): Redirect after processing field. (handle_delete_field): Don't copy request. (handle_new_field): Likewise. (handle_new_class): Likewise. (handle_submit_notification): Likewise. (handle_submit_subscription): Likewise. (handle_add_discussion): Likewise. * share/dtml/track/issue-class.dtml: Don't open edit page in new browser window. * share/dtml/add-enumeral.dtml: New template. More... about 24 years ago
* qm/common.py (Enumeral): Remove. * qm/fields.py (EnumerationField): Reimplement as TextField subclass. * qm/track/issue_class.py (StateField.__init__): Adjust accordingly. (StateField.UpdateEnumeration): Likewise. (StateField._EnumerationField__GetAvailableEnumerals): Rename to... (StateField._GetAvailableEnumerals): ... this. * qm/track/web/query.py (QueryPageInfo.MakeCategorySelect): Adjust accordingly. (QueryPageInfo.MakeStateSelect): Likewise. More... about 24 years ago
* doc/qm.mod (idb): New entity. * doc/manual/manual.xml (track-tour.xml): New entity. Use it. * doc/manual/track-tour.xml: New file. More... about 24 years ago
* qm/track/web/issue_class.py (NotificationPageInfo): New class. (handle_show_notification): New function. (handle_submit_notification): Likewise. (handle_show_subscription): Likewise. (handle_submit_subscription): Likewise. (handle_add_discussion): Likewise. * qm/track/triggers/notification.py (NotifyFixedTrigger.__init__): Separate recpients by email address and UID. (NotifyFixedTrigger.GetSubscriberAddresses): Reimplement. (NotifyFixedTrigger.GetRecipientAddresses): New method. (NotifyFixedTrigger.GetRecipientUids): Likewise. (NotifyFixedTrigger.AddSubscriberAddress): Rename to... (NotifyFixedTrigger.AddRecipientAddress): ... this. (NotifyFixedTrigger.AddSubscriberUid): Rename to... (NotifyFixedTrigger.AddRecipientUid): ... this. * qm/track/server.py (start_server): Register add-discussion, show-notification, show-subscription, submit-notification, submit-subscription. * qm/track/issue_class.py (IssueClass.__init__): Adjust descriptions. (IssueClass.RegisterTrigger): Remove existing trigger. (IssueClass.GetTrigger): New method. More... about 24 years ago
* qm/web.py (make_set_control): Add ellipsis to Add... (make_select): Add update_external_field parameter. * qm/track/web/query.py (QueryPageInfo.MakePythonQueryHelp): Handle no issue classes case. (QueryPageInfo.MakeCategorySelect): Likewise. (QueryPageInfo.MakeStateSelect): Likewise. * qm/track/web/issue_class.py (AddClassPageInfo): New class. (handle_add_class): New function. (handle_new_class): Likewise. * qm/track/web/index.py (IndexPageInfo.__init__): Don't set default_issue_class if there are none. * qm/track/server.py (start_server): Register add-issue-class, new-issue-class. * qm/track/issue_class.py (default_categories): Make it a list. (IssueClass.__init__): Convert categories from list to map. * qm/track/config.py (setup_idb_for_internal_use): Make categories a list. * share/diagnostics/track.txt (invalid class name): New diagnostic. (missing class title): Likewise. * share/dtml/track/issue-class.dtml: Use issue class title. Adjust. * share/dtml/track/index.dtml: Handle no issue class case. * share/dtml/track/config-idb.dtml: Adjust formatting. Add button to add a new class. * share/dtml/track/add-issue-class.dtml: Likewise. * share/dtml/track/add-category-name.dtml: New template. More... about 24 years ago