Bird
Raised Fist0
Gitdevops~20 mins

Automated testing on push in Git - Practice Problems & Coding Challenges

Choose your learning style10 modes available
Challenge - 5 Problems
🎖️
Automated Testing Pro
Get all challenges correct to earn this badge!
Test your skills under time pressure!
💻 Command Output
intermediate
2:00remaining
What is the output of this Git hook command?
You have a pre-push Git hook script that runs tests before pushing. The script contains:
#!/bin/sh
npm test

If the tests fail, what will be the output of git push?
Git
#!/bin/sh
npm test
APush is aborted and error messages from tests are shown.
BPush succeeds regardless of test results.
CGit shows a warning but pushes anyway.
DPush is delayed until tests pass manually.
Attempts:
2 left
💡 Hint
Git hooks can stop push if the script exits with an error.
🧠 Conceptual
intermediate
1:30remaining
Why use automated tests on push in Git workflows?
Which of these is the main reason to run automated tests on every push?
ATo ensure code quality and catch errors early before integration.
BTo slow down the development process intentionally.
CTo avoid writing tests locally by developers.
DTo automatically merge branches without review.
Attempts:
2 left
💡 Hint
Think about preventing broken code from entering shared branches.
❓ Configuration
advanced
1:30remaining
Which Git hook file should you create to run tests automatically before pushing?
You want to run a test script automatically every time you push code. Which file should you create or edit inside the .git/hooks directory?
Apost-commit
Bpost-push
Cpre-push
Dpre-commit
Attempts:
2 left
💡 Hint
The hook runs right before pushing to remote.
❓ Troubleshoot
advanced
2:00remaining
Why does my pre-push hook not stop the push even if tests fail?
You wrote a pre-push hook script to run tests, but even when tests fail, the push still succeeds. What is the most likely cause?
AThe remote repository ignores hooks.
BThe hook script does not exit with a non-zero status on test failure.
CGit does not support pre-push hooks.
DTests are not run because the script is named incorrectly.
Attempts:
2 left
💡 Hint
Git stops push only if the hook exits with an error code.
🔀 Workflow
expert
2:30remaining
Order the steps in a Git workflow with automated testing on push
Arrange these steps in the correct order when using automated tests triggered by a Git pre-push hook.
A1,2,4,3
B2,1,3,4
C1,3,2,4
D1,2,3,4
Attempts:
2 left
💡 Hint
Think about the natural flow from coding to pushing with tests in between.

Practice

(1/5)
1. What is the main purpose of automated testing on push in Git workflows?
easy
A. To run tests automatically when code is pushed to catch errors early
B. To manually review code before merging
C. To delete old branches after pushing
D. To speed up the push command execution

Solution

  1. Step 1: Understand automated testing on push

    Automated testing on push means tests run automatically when code is pushed to a repository.
  2. Step 2: Identify the main benefit

    This helps catch errors early and keeps the project stable by preventing broken code from merging.
  3. Final Answer:

    To run tests automatically when code is pushed to catch errors early -> Option A
  4. Quick Check:

    Automated testing on push = run tests automatically [OK]
Hint: Automated testing runs tests on push to catch bugs early [OK]
Common Mistakes:
  • Thinking it speeds up git push command
  • Confusing with manual code review
  • Assuming it deletes branches automatically
2. Which file is commonly used to configure automated tests to run on push in a GitHub repository?
easy
A. package.json
B. README.md
C. .gitignore
D. .github/workflows/ci.yml

Solution

  1. Step 1: Identify configuration file for GitHub Actions

    GitHub Actions uses YAML files inside the .github/workflows directory to define workflows.
  2. Step 2: Match file to automated testing on push

    The file .github/workflows/ci.yml typically contains instructions to run tests on push events.
  3. Final Answer:

    .github/workflows/ci.yml -> Option D
  4. Quick Check:

    GitHub Actions config = .github/workflows/ci.yml [OK]
Hint: GitHub Actions workflows live in .github/workflows/ [OK]
Common Mistakes:
  • Choosing .gitignore which ignores files
  • Selecting README.md which is documentation
  • Picking package.json which is for Node.js dependencies
3. Given this GitHub Actions workflow snippet, what happens when you push code to the main branch?
name: CI
on:
  push:
    branches: [main]
jobs:
  test:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v3
      - name: Run tests
        run: echo "Tests passed!"
medium
A. The workflow fails because 'run' command is invalid
B. The workflow runs only on pull requests, not on push
C. The workflow runs and prints 'Tests passed!' on every push to main
D. Nothing happens because branches is empty

Solution

  1. Step 1: Analyze the trigger event

    The workflow triggers on push events to the 'main' branch as specified under 'on: push: branches: [main]'.
  2. Step 2: Check the job steps

    The job runs on ubuntu-latest, checks out the code, then runs the command echo "Tests passed!" which prints that message.
  3. Final Answer:

    The workflow runs and prints 'Tests passed!' on every push to main -> Option C
  4. Quick Check:

    Push to main triggers workflow = prints message [OK]
Hint: Push to main triggers workflow with echo command [OK]
Common Mistakes:
  • Thinking it runs only on pull requests
  • Assuming 'run' command is invalid syntax
  • Believing branches list is empty
4. You wrote this GitHub Actions workflow to run tests on push but it never runs:
name: Test
on:
  push:
    branch: main
jobs:
  test:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v3
      - run: echo "Running tests"
What is the error?
medium
A. The 'run' command must be inside a 'steps' array
B. The key 'branch' should be 'branches' under 'push' to specify branches list
C. The 'uses' action 'actions/checkout@v3' is deprecated
D. The 'runs-on' value 'ubuntu-latest' is invalid

Solution

  1. Step 1: Check the event trigger syntax

    The workflow uses 'branch' instead of 'branches' under 'push'. The correct key is 'branches' which expects a list.
  2. Step 2: Understand impact of wrong key

    Because 'branch' is invalid, the workflow never triggers on any push event.
  3. Final Answer:

    The key 'branch' should be 'branches' under 'push' to specify branches list -> Option B
  4. Quick Check:

    Correct key is 'branches' not 'branch' [OK]
Hint: Use 'branches' (plural) under push, not 'branch' [OK]
Common Mistakes:
  • Confusing 'branch' with 'branches'
  • Thinking 'runs-on' value is wrong
  • Assuming checkout action is deprecated
5. You want to run automated tests only when code is pushed to either the 'main' or 'develop' branches. Which is the correct snippet to add in your GitHub Actions workflow YAML to trigger on these pushes?
hard
A. on: push: branches: - main - develop
B. on: push: branch: ['main', 'develop']
C. on: push: branch: 'main, develop'
D. on: push: refs: ['main', 'develop']

Solution

  1. Step 1: Understand correct YAML syntax for branches

    The 'branches' key expects a list of branch names, each on its own line or in a list format.
  2. Step 2: Compare options

    on: push: branch: ['main', 'develop'] uses incorrect singular 'branch' key instead of plural 'branches'. on: push: branches: - main - develop uses the correct 'branches' key with standard YAML list format using dashes, which is widely used.
  3. Step 3: Identify invalid options

    on: push: branch: 'main, develop' uses 'branch' (wrong key) and a string with comma, which is invalid. on: push: refs: ['main', 'develop'] uses 'refs' which is not the correct key for branches under push.
  4. Final Answer:

    on: push: branches: - main - develop -> Option A
  5. Quick Check:

    Use 'branches' with list syntax for multiple branches [OK]
Hint: Use 'branches:' with dash list for multiple branches [OK]
Common Mistakes:
  • Using 'branch' instead of 'branches'
  • Passing branches as a comma string
  • Using 'refs' instead of 'branches'
Recommended

Ready to prove it?

Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

10 questions~5 mineasy hard