testing/tests/download: add git hash test
authorRicardo Martincoski <ricardo.martincoski@datacom.ind.br>
Sat, 12 May 2018 02:58:27 +0000 (23:58 -0300)
committerArnout Vandecappelle (Essensium/Mind) <arnout@mind.be>
Mon, 4 Feb 2019 15:52:58 +0000 (16:52 +0100)
commitf284b5e7a1618f0f3f2eec0876a0da8d5848b0fa
tree108814ba9e48ebdc95c64b3e736821072c60a1e6
parent1226a70a700626aede9ca034d4d56a79ee10a001
testing/tests/download: add git hash test

Add one test case to ensure the hash is checked for git packages:
 - correct hash;
 - wrong hash;
 - no hash file.

Add required infra:
 - a GitRemote class, that can start a git server in the host machine to
   emulate a remote git server under the control of the test;
 - a new base class, called GitTestBase, that inherits from BRTest and
   must be subclassed by all git test cases.
   Its setUp() method takes care of configuring the build with a
   br2-external, avoiding to hit http://sources.buildroot.net by using
   an empty BR2_BACKUP_SITE. It also avoids downloading not
   pre-installed dependencies (i.e. lzip) every time by calling 'make
   dependencies' using the common dl directory, and it instantiates the
   GitRemote object.

Besides the Python scripts, add some fixtures used during the tests:
 - a br2-external (git-hash) with one package for each part of the test
   case;
 - a static git bare repo (repo.git) to be served using GitRemote class.

Neither the br2-external nor the check hash functionalities are the
subject of these tests per se, so for simplicity limit the check to the
error codes and don't look for the messages in the log.

Thanks to Arnout for the hint about how to add a bare repo to test.

Signed-off-by: Ricardo Martincoski <ricardo.martincoski@datacom.ind.br>
Cc: Arnout Vandecappelle <arnout@mind.be>
Tested-by: Matthew Weber <matthew.weber@rockwellcollins.com>
[Arnout: split long line; reorder imports to satisfy flake8]
Signed-off-by: Arnout Vandecappelle (Essensium/Mind) <arnout@mind.be>
19 files changed:
.gitlab-ci.yml
support/testing/tests/download/__init__.py [new file with mode: 0644]
support/testing/tests/download/br2-external/git-hash/Config.in [new file with mode: 0644]
support/testing/tests/download/br2-external/git-hash/external.desc [new file with mode: 0644]
support/testing/tests/download/br2-external/git-hash/external.mk [new file with mode: 0644]
support/testing/tests/download/br2-external/git-hash/package/bad/bad.hash [new file with mode: 0644]
support/testing/tests/download/br2-external/git-hash/package/bad/bad.mk [new file with mode: 0644]
support/testing/tests/download/br2-external/git-hash/package/good/good.hash [new file with mode: 0644]
support/testing/tests/download/br2-external/git-hash/package/good/good.mk [new file with mode: 0644]
support/testing/tests/download/br2-external/git-hash/package/nohash/nohash.mk [new file with mode: 0644]
support/testing/tests/download/git-remote/repo.git/.gitattributes [new file with mode: 0644]
support/testing/tests/download/git-remote/repo.git/HEAD [new file with mode: 0644]
support/testing/tests/download/git-remote/repo.git/config [new file with mode: 0644]
support/testing/tests/download/git-remote/repo.git/objects/99/f2e3e1cb15f9b52fa29f66d380dda061d917ab [new file with mode: 0644]
support/testing/tests/download/git-remote/repo.git/objects/a2/38b1dfcd825d47d834af3c5223417c8411d90d [new file with mode: 0644]
support/testing/tests/download/git-remote/repo.git/objects/e7/9c5e8f964493290a409888d5413a737e8e5dd5 [new file with mode: 0644]
support/testing/tests/download/git-remote/repo.git/refs/heads/master [new file with mode: 0644]
support/testing/tests/download/gitremote.py [new file with mode: 0644]
support/testing/tests/download/test_git.py [new file with mode: 0644]