Commit graph

44 commits

Author SHA1 Message Date
Paul Morgan
2a58a9b8e7 allow empty dist tag in functional tests
before this commit: fetch_tests and release_yum_tests
allow *any* dist tag, but the tag must not be empty or
else the glob fails on double-dot in path name.

after this commit: allow the tag to be any *or* empty.
2014-02-28 19:07:53 +00:00
Paul Morgan
9f2c259c85 python 2.4 (rhel 5) does not support 'with...as' syntax
resolves from a73c90cb...

    Using Python 2.4
    Using nose 0.1
    Running tito tests against: /home/sandbox/src
    EEEE.Warning: spacewalk.releng.* namespace in tito.props is obsolete. Use tito.* instead.
    Warning: spacewalk.releng.* namespace in tito.props is obsolete. Use tito.* instead.
    ..............................F...........
    ======================================================================
    ERROR: Failure: SyntaxError (invalid syntax (fixture.py, line 159))
    ----------------------------------------------------------------------
    Traceback (most recent call last):
      File "/usr/lib/python2.4/site-packages/nose/loader.py", line 381, in loadTestsFromName
        module = self.importer.importFromPath(
      File "/usr/lib/python2.4/site-packages/nose/importer.py", line 39, in importFromPath
        return self.importFromDir(dir_path, fqname)
      File "/usr/lib/python2.4/site-packages/nose/importer.py", line 86, in importFromDir
        mod = load_module(part_fqname, fh, filename, desc)
      File "/home/sandbox/test/functional/fetch_tests.py", line 27, in ?
        from fixture import TitoGitTestFixture, tito
      File "/home/sandbox/test/functional/fixture.py", line 159
        with open(os.path.join(full_pkg_dir, 'tito.props'), 'w') \
                ^
    SyntaxError: invalid syntax
2014-02-28 15:38:25 +00:00
Paul Morgan
25c6f7f1e0 avoid ImportError in test suite on python 3
python3 does not allow relative imports.

test/unit/__init.py__ and test/functional/__init.py__ already exist,
which means we can use absolute import on all versions of python
without resorting to http://legacy.python.org/dev/peps/pep-0328/
2014-02-28 15:38:25 +00:00
Paul Morgan
03255001d6 add unit test and module compatibility lib
Add modules compat lib to support both python 2 and 3, and
add unit test to detect regressions.

Tito uses two modules that have changed significantly between
python 2 and 3:

* commands module merged into subprocess module
* ConfigParser module renamed as configparser
2014-02-28 15:38:25 +00:00
Paul Morgan
1597d7956a add pep8 tests and fix lexical indentation for python3
These are the pep8 tests that break python3,
such as mixing tabs and spaces for indentation.

I ignored all the pep8 tests that seemed only stylistic,
such as "visual" indentation.

http://docs.python.org/3.3/reference/lexical_analysis.html
2014-02-28 01:34:34 +00:00
Paul Morgan
97b29d6c35 add pep8 tests and fix blank line errors and warnings 2014-02-28 01:34:34 +00:00
Paul Morgan
53f9a02442 avoid TB in nose tests if there is no tty
GitPython's git.util.get_user_id() calls os.getlogin(), which
throws an OSError if there is no tty:

    Traceback (most recent call last):
      File "/home/sandbox/test/functional/multiproject_tests.py", line 65, in setUp
        TitoGitTestFixture.setUp(self)
      File "/home/sandbox/test/functional/fixture.py", line 129, in setUp
        index.commit('Setting offline.')
      File "/usr/lib/python2.7/site-packages/git/index/base.py", line 887, in commit
        return Commit.create_from_tree(self.repo, tree, message, parent_commits, head)
      File "/usr/lib/python2.7/site-packages/git/objects/commit.py", line 303, in create_from_tree
        committer = Actor.committer(cr)
      File "/usr/lib/python2.7/site-packages/git/util.py", line 354, in committer
        return cls._main_actor(cls.env_committer_name, cls.env_committer_email, config_reader)
      File "/usr/lib/python2.7/site-packages/git/util.py", line 327, in _main_actor
        default_email = get_user_id()
      File "/usr/lib/python2.7/site-packages/git/util.py", line 120, in get_user_id
        username = os.getlogin()
    OSError: [Errno 25] Inappropriate ioctl for device

But GitPython also allows to avoid the call by setting
environment variable "USER" to anything other than "UNKNOWN".

Therefore we preempt GitPython by calling os.getlogin() ourselves.
If we have to rescue the exception, export the environment var to
avoid traceback.
2014-02-27 21:22:05 +00:00
Devan Goodwin
8d64e56b4e Fix bug with fetch builder source replacement. 2014-02-27 15:44:42 -04:00
Devan Goodwin
8342529dd9 Fix releasers and respect offline flag. 2014-02-27 11:46:00 -04:00
Devan Goodwin
9474b0ab95 Support release with fetch builder. 2014-02-26 15:58:58 -04:00
Devan Goodwin
a6d71534bb Add support for passing builder args through a releaser. 2014-02-26 14:52:56 -04:00
Devan Goodwin
1535850328 More testing. 2014-02-03 15:59:26 -04:00
Devan Goodwin
922c0f2850 Rename --builder-arg to just --arg in build command. 2014-01-16 14:52:55 -04:00
Devan Goodwin
e1a0017144 Rename to FetchBuilder. 2014-01-15 16:17:02 -04:00
Devan Goodwin
35c51ba7a3 Refactor to just one config object.
Instead of passing package specific and global config around separately, parse
them as one config object where package specific can override global should the
same sections and properties exist.

If you maintain custom builders/releasers, they will need to have their
constructors updated.
2014-01-14 11:50:39 -04:00
Devan Goodwin
a73c90cbf5 Make external source builder fetch strategy configurable. 2014-01-13 16:29:38 -04:00
Devan Goodwin
a52a2458c4 Merge branch 'master' into sourcefetch
Conflicts:
	test/functional/singleproject_tests.py

Technically not a merge, did a bunch of work only to discover I was mid-merge when I did it.
2014-01-13 14:40:28 -04:00
Devan Goodwin
8fe640e0ed Fix buildroot using ~/rpmbuild/BUILDROOT.
This may have been a recent change in rpmbuild that caused this as the
_buildroot macro appears to be somewhat new. However it seems using topdir
accomplishes the same thing more thoroughly.
2014-01-10 16:12:16 -04:00
Devan Goodwin
6097b7da59 Restore building of specific tags. 2014-01-09 15:52:17 -04:00
Devan Goodwin
05e3b80205 Extract version/release in external source builder. 2014-01-09 15:20:04 -04:00
Devan Goodwin
381debd36b Replace external sources in spec file copy during build. 2014-01-03 14:28:26 -04:00
Devan Goodwin
199f332d4d Start building with external sources and no tag.
Currently uses the files in the directory where tito was initially run, hoping to make this smarter and more useful soon.
2014-01-02 15:20:52 -04:00
Devan Goodwin
a3363cb93f Merge the FiledVersionTagger into the base VersionTagger.
This allows the behaviour to be used in just about any tagger sub-class.

Behaviour will be triggered on the presence of the 'version_template'
section in tito.props.

Renamed config:
  version -> version_template (section)
  file -> destination_file

Separated the replacement of version and release, as caller may just
want one or the other. (it works fine if only one of the variables is
present in your template file) Release is more of an rpm concept so may
not always be wanted in this context.

Removed the notion of default template files, if you want to use this
you need to specify the configuration for it.

Added a functional test to make sure I keep it working.
2013-11-12 13:28:32 -04:00
jesus m. rodriguez
c1df0a1a81 PEP8 cleanup 2011-12-05 14:37:07 -05:00
Devan Goodwin
8246ec2b79 Functional test fix. 2011-11-25 11:30:51 -04:00
Alex Wood
3a621a9cc2 Adding --use-version to allow Tito to force a version to use. 2011-10-21 16:23:01 -04:00
Devan Goodwin
dc27216b51 Add some multi-project builder tests. 2010-05-24 23:16:49 -03:00
Devan Goodwin
7e8017571f Port multi-project git tests to use GitPython more. 2010-05-24 14:59:50 -03:00
Devan Goodwin
73413b30bd Better tag undo test. 2010-05-24 13:51:48 -03:00
Devan Goodwin
a29185f8c5 Port remaining single project tests to new format. 2010-05-24 11:35:07 -03:00
Devan Goodwin
bd84de04c7 Better test repo/project creation. 2010-05-24 11:26:22 -03:00
Devan Goodwin
e49b6f77cf Begin testing with GitPython. 2010-05-24 00:56:30 -03:00
Devan Goodwin
a0cdf98405 Test tito via CLI class rather than shell commands.
Should allow for much better error checking.
2010-05-24 00:44:47 -03:00
Devan Goodwin
f6eedc27bb Introduce --output option for destination/tmp directory. 2009-08-02 14:53:41 -03:00
Devan Goodwin
b0843d6b66 Use tito.props for project specific config filename.
Aparently we were still using legacy build.py.props from before the tito
rename.
2009-08-02 14:22:06 -03:00
Devan Goodwin
3461d47cc9 Add multi-project repo tagging tests. 2009-08-02 13:46:03 -03:00
Devan Goodwin
a393dfbfda Create a multi-project git repository for testing. 2009-08-02 12:33:36 -03:00
Devan Goodwin
6dd00ae3bc Test additions and improvements.
And a rename to something more appropriate.
2009-07-29 21:00:35 -03:00
James Bowes
515815dcbc pyflakes cleanup
Signed-off-by: Devan Goodwin <dgoodwin@rm-rf.ca>
2009-07-27 00:08:21 +08:00
Devan Goodwin
0de5290258 Expand tagging tests. 2009-07-25 12:39:22 -03:00
Devan Goodwin
1f587f0f3c Kinda support running nosetests manually.
Will fail unless you have tito installed on your system. In this case
only the bare tito script in bin and seldom modified perl scripts will
be used from the installed version, the code should still run against
the source.
2009-07-25 11:54:06 -03:00
Devan Goodwin
6ea3f432bc Re-enable functional tests, add top level runtests.py.
Path hacks currently requiring this, though we still use python-nose
once it's time to actually call the tests. Still probably a solution to
get rid of the test script...
2009-07-25 11:50:02 -03:00
Devan Goodwin
e5e98bc098 Big test refactor.
Introduce unit test framework, disable functional test framework for
now, but getting closer to something that's sensible.
2009-07-24 23:00:45 -03:00
Devan Goodwin
af72fd5572 Prep for namespace change spacewalk.releng -> tito. 2009-07-24 22:11:25 -03:00