annotate hgaction.h @ 200:8c8c04bdf0fa

* Separate out the hg test action into two tests, one for plain hg and one with the extension (so can report separately)
author Chris Cannam
date Tue, 04 Jan 2011 12:42:28 +0000
parents 6def8bf3be44
children 8fd71f570884
rev   line source
Chris@109 1 /* -*- c-basic-offset: 4 indent-tabs-mode: nil -*- vi:set ts=8 sts=4 sw=4: */
Chris@109 2
Chris@109 3 /*
Chris@109 4 EasyMercurial
Chris@109 5
Chris@109 6 Based on HgExplorer by Jari Korhonen
Chris@109 7 Copyright (c) 2010 Jari Korhonen
Chris@109 8 Copyright (c) 2010 Chris Cannam
Chris@109 9 Copyright (c) 2010 Queen Mary, University of London
Chris@109 10
Chris@109 11 This program is free software; you can redistribute it and/or
Chris@109 12 modify it under the terms of the GNU General Public License as
Chris@109 13 published by the Free Software Foundation; either version 2 of the
Chris@109 14 License, or (at your option) any later version. See the file
Chris@109 15 COPYING included with this distribution for more information.
Chris@109 16 */
Chris@109 17
Chris@109 18 #ifndef HGACTION_H
Chris@109 19 #define HGACTION_H
Chris@109 20
Chris@109 21 #include <QString>
Chris@109 22 #include <QStringList>
Chris@109 23
Chris@109 24 enum HGACTIONS
Chris@109 25 {
Chris@109 26 ACT_NONE,
Chris@175 27 ACT_TEST_HG,
Chris@200 28 ACT_TEST_HG_EXT,
Chris@109 29 ACT_QUERY_PATHS,
Chris@109 30 ACT_QUERY_BRANCH,
Chris@109 31 ACT_STAT,
Chris@163 32 ACT_RESOLVE_LIST,
Chris@109 33 ACT_QUERY_HEADS,
Chris@109 34 ACT_QUERY_PARENTS,
Chris@109 35 ACT_LOG,
Chris@115 36 ACT_LOG_INCREMENTAL,
Chris@109 37 ACT_REMOVE,
Chris@109 38 ACT_ADD,
Chris@109 39 ACT_INCOMING,
Chris@109 40 ACT_PUSH,
Chris@109 41 ACT_PULL,
Chris@109 42 ACT_CLONEFROMREMOTE,
Chris@109 43 ACT_INIT,
Chris@109 44 ACT_COMMIT,
Chris@109 45 ACT_ANNOTATE,
Chris@168 46 ACT_DIFF_SUMMARY,
Chris@109 47 ACT_FOLDERDIFF,
Chris@109 48 ACT_CHGSETDIFF,
Chris@109 49 ACT_UPDATE,
Chris@109 50 ACT_REVERT,
Chris@109 51 ACT_MERGE,
Chris@109 52 ACT_SERVE,
Chris@109 53 ACT_RESOLVE_MARK,
Chris@109 54 ACT_RETRY_MERGE,
Chris@109 55 ACT_TAG,
Chris@109 56 ACT_HG_IGNORE,
Chris@109 57 };
Chris@109 58
Chris@109 59 struct HgAction
Chris@109 60 {
Chris@109 61 HGACTIONS action;
Chris@109 62 QString workingDir;
Chris@109 63 QStringList params;
Chris@113 64 QString executable; // empty for normal Hg, but gets filled in by hgrunner
Chris@109 65
Chris@109 66 HgAction() : action(ACT_NONE) { }
Chris@109 67
Chris@109 68 HgAction(HGACTIONS _action, QString _wd, QStringList _params) :
Chris@109 69 action(_action), workingDir(_wd), params(_params) { }
Chris@109 70
Chris@109 71 bool operator==(const HgAction &a) {
Chris@109 72 return (a.action == action && a.workingDir == workingDir &&
Chris@109 73 a.params == params && a.executable == executable);
Chris@109 74 }
Chris@109 75
Chris@115 76 bool shouldBeFast() const {
Chris@115 77 switch (action) {
Chris@115 78 case ACT_NONE:
Chris@200 79 case ACT_TEST_HG:
Chris@200 80 case ACT_TEST_HG_EXT:
Chris@115 81 case ACT_QUERY_PATHS:
Chris@115 82 case ACT_QUERY_BRANCH:
Chris@115 83 case ACT_STAT:
Chris@175 84 case ACT_RESOLVE_LIST:
Chris@115 85 case ACT_QUERY_HEADS:
Chris@115 86 case ACT_QUERY_PARENTS:
Chris@115 87 case ACT_LOG_INCREMENTAL:
Chris@115 88 return true;
Chris@115 89 default:
Chris@115 90 return false;
Chris@115 91 }
Chris@115 92 }
Chris@115 93
Chris@109 94 bool mayBeInteractive() const {
Chris@109 95 switch (action) {
Chris@200 96 case ACT_TEST_HG_EXT: // so we force the module load to be tested
Chris@109 97 case ACT_INCOMING:
Chris@109 98 case ACT_PUSH:
Chris@109 99 case ACT_PULL:
Chris@109 100 case ACT_CLONEFROMREMOTE:
Chris@110 101 case ACT_FOLDERDIFF:
Chris@110 102 case ACT_CHGSETDIFF:
Chris@110 103 case ACT_SERVE:
Chris@109 104 return true;
Chris@109 105 default:
Chris@109 106 return false;
Chris@109 107 }
Chris@109 108 }
Chris@109 109 };
Chris@109 110
Chris@109 111 #endif