import os import infra.basetest class TestGit(infra.basetest.BRTest): config = infra.basetest.BASIC_TOOLCHAIN_CONFIG + \ """ BR2_PACKAGE_GIT=y BR2_TARGET_ROOTFS_CPIO=y # BR2_TARGET_ROOTFS_TAR is not set """ def test_run(self): cpio_file = os.path.join(self.builddir, "images", "rootfs.cpio") self.emulator.boot(arch="armv5", kernel="builtin", options=["-initrd", cpio_file]) self.emulator.login() # Check the program can execute. self.assertRunOk("git --version") # Initialize some git global configuration. git_cfg = [ ("user.name", "Build Root"), ("user.email", "build.root@localhost.localdomain"), ("color.ui", "false"), ("init.defaultBranch", "master"), ("core.pager", "") ] for cfg_name, cfg_value in git_cfg: cmd = f"git config --global {cfg_name} '{cfg_value}'" self.assertRunOk(cmd) # Run a sequence of few git commands. commands = [ "mkdir workdir", "cd workdir", "git init", "echo 'Hello World' > file.txt", "git add file.txt", "git commit -as -m 'Initial commit'", "git checkout -b my_branch", "sed -i 's/World/Buildroot/g' file.txt", "git status", "git commit -as -m 'Replace World by Buildroot'", "git format-patch -M -n -s -o patches master", "ls -al patches/*.patch", "git checkout -b another_branch master", "git am patches/*.patch", "git diff --exit-code my_branch another_branch", "git tag -a -m 'Tagged v1.0' v1.0", "git log" ] for cmd in commands: self.assertRunOk(cmd)