https://github.com/yegor256/donce
Docker Once: builds a temporary Docker image, runs a temporary Docker container, lets your tests interact with it, terminates and cleans up
https://github.com/yegor256/donce
automated-testing docker ruby testing unit-testing
Last synced: 3 months ago
JSON representation
Docker Once: builds a temporary Docker image, runs a temporary Docker container, lets your tests interact with it, terminates and cleans up
- Host: GitHub
- URL: https://github.com/yegor256/donce
- Owner: yegor256
- License: mit
- Created: 2025-02-06T05:48:00.000Z (4 months ago)
- Default Branch: master
- Last Pushed: 2025-03-04T09:20:18.000Z (3 months ago)
- Last Synced: 2025-03-04T10:27:41.845Z (3 months ago)
- Topics: automated-testing, docker, ruby, testing, unit-testing
- Language: Ruby
- Homepage:
- Size: 92.8 KB
- Stars: 2
- Watchers: 2
- Forks: 0
- Open Issues: 3
-
Metadata Files:
- Readme: README.md
- License: LICENSE.txt
Awesome Lists containing this project
README
# Builds Docker image, runs it, and kills
[](http://www.rultor.com/p/yegor256/donce)
[](https://www.jetbrains.com/ruby/)[](https://github.com/yegor256/donce/actions/workflows/rake.yml)
[](http://www.0pdd.com/p?name=yegor256/donce)
[](http://badge.fury.io/rb/donce)
[](https://codecov.io/github/yegor256/donce?branch=master)
[](http://rubydoc.info/github/yegor256/donce/master/frames)
[](https://hitsofcode.com/view/github/yegor256/donce)
[](https://github.com/yegor256/donce/blob/master/LICENSE.txt)This small Ruby library helps building temporary [Docker]
images, runs Docker containers, and cleans up afterwards — it may be
convenient for automated tests (for example, with [Minitest]):```ruby
class MyTest < Minitest::Test
def test_prints_hello_world
stdout = donce(
dockerfile: '
FROM ubuntu
CMD echo "Hello, world!"
'
)
assert_equal("Hello, world!\n", stdout)
end
end
```It's possible to run Docker image in a background mode too:
```ruby
stdout = donce(image: 'ubuntu', command: 'sleep 9999') do |id|
# The "id" is the container id
# The "donce_host()" is the hostname of it
end
```That's it.
## How to contribute
Read
[these guidelines](https://www.yegor256.com/2014/04/15/github-guidelines.html).
Make sure your build is green before you contribute
your pull request. You will need to have
[Ruby](https://www.ruby-lang.org/en/) 3.2+ and
[Bundler](https://bundler.io/) installed. Then:```bash
bundle update
bundle exec rake
```If it's clean and you don't see any error messages, submit your pull request.
[Docker]: https://www.docker.com/
[Minitest]: https://github.com/minitest/minitest