Comments (3)
Here is my current "hack: around existing feature:
Describe 'checkout_release_branch()'
Mock git
echo 'Mock Test: git' "$@"
End
Describe 'when branch does not exist'
It 'it calls git checkout with proper args'
When call 'checkout_release_branch' 'my-release-name'
The status should be success
The stdout should include 'Mock Test: git checkout --orphan my-release-name --quiet'
End
End
End
Not great, but better than nothing.
from shellspec.
This is very much needed and I'm surprised nobody else has posted about this.
I don't believe there are any matchers now equivalent to RSpec's "Expect mock to have been called with" matcher.
A use-case for shell scripting would be calling git
with certain arguments.
Eg, "Expect code to call git pull --ff-only
" when X condition happens, and git pull --rebase true
when Y condition happens
We're not testing the git
command, we're testing that git
was called with certain args. Very important to test.
from shellspec.
I find it useful to be able to record and test calls like MagicMock in pytest.
I prepared the following code.
$ cat ./spec/magic_mock.sh
#! /bin/sh
OUTPUT=${0##./spec/}.called
echo $* >> ${OUTPUT}
Mock the git command.
Describe 'hellogit'
Include lib/hello.sh
Mock git
./spec/magic_mock.sh git $*
echo $*
End
It 'git show'
When call hellogit https://github.com/shellspec/shellspec.git
The stdout should eq "show v0.1.0"
End
End
When executed, the call will be recorded in the magic_mock.called file.
$ shellspec
Running: /bin/sh [sh]
.
Finished in 0.09 seconds (user 0.08 seconds, sys 0.02 seconds)
1 example, 0 failures
$ cat magic_mock.sh.called
git clone https://github.com/shellspec/shellspec.git
git show v0.1.0
$
I don't know how to test this result.
For example, I would like to test the results as follows.
It 'git show'
When call hellogit
The callwith[0] eq "git clone https://github.com/shellspec/shellspec.git"
The callwith[1] eq "git show v0.1.0"
End
The code I tested is below.
hellogit() {
git clone $1 > /dev/null 2>&1
git show v0.1.0
}
from shellspec.
Related Issues (20)
- Provide a junit 5 config parameter to enable turn off adding stdout and stderr into the junit xml files.
- Intercepting the script as shown in documentation example isn't preserving the variables for "When run source" HOT 1
- does shellspec support csh or tcsh?
- "Not found specified shell" in OpenBSD HOT 2
- Acronyms are not defined before use
- STDIN in test is bound to the calling terminal STDIN when Data block not specified HOT 2
- allow comparing stdout/stderr to the contents in a file HOT 2
- Pipping echo command prints to output HOT 2
- shellspec --init not working with whitespaces in working path on WSL Ubuntu on Windows HOT 4
- yash version 2.54 does not work with shellspec
- kcov show no coverage with --execdir
- kcov with /bin/bash or /bin/sh HOT 1
- Command Based Mock - command execution status HOT 2
- Parameters:dynamic from a shell script HOT 1
- No error in execution without coverage report generation, problem in using coverage report generation
- Can local variables of the function under test be modified by the test case simulation? HOT 3
- Nested `source` commands inside scripts under testing
- Unit tests for Inner Function without calling the outer function HOT 1
- fails when expected success HOT 1
- Typo in the README.md, see "Intercepting" sample
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from shellspec.