def test_with_pipeline_mapper_both(self): result = s('echo 3; echo 2; echo 4 >&2; echo 0 >&2') % sort() > Collect self.assertEqual("2\n3\n", result.stdout()) self.assertEqual("0\n4\n", result.stderr()) self.assertEqual( [(FD.stderr, "0\n"), (FD.stdout, "2\n"), (FD.stdout, "3\n"), (FD.stderr, "4\n")], list(s('echo 3; echo 2; echo 4 >&2; echo 0 >&2') % sort()))
def test_head_on_heterogenous_stream(self): command = [] for i in range(1, 9): command.append("echo %s" % i + (i % 2 == 0) * " >&2") result = s("; sleep 0.01; ".join(command)) % head(5) > Collect self.assertEqual("1\n3\n5\n", result.stdout()) self.assertEqual("2\n4\n", result.stderr())
def test_retain_both(self): result = s('echo 1; echo 2; echo 3; echo 4; echo 5 >&2; echo 6 >&2' ) % retain(lambda x: int(x) % 2) > Collect self.assertEqual("1\n3\n", result.stdout()) self.assertEqual("5\n", result.stderr())
def test_basic_map(self): result = s('echo 2; echo 3; echo 4 >&2') | int | ( lambda x: x * 2) > Collect self.assertEqual([4, 6], result.stdout(raw=True)) self.assertEqual("4\n", result.stderr())
def test_head_on_wrong_stream(self): result = s('echo 1; echo 2; echo 3; echo 4; echo 5') / head( 3) > Collect self.assertEqual("1\n2\n3\n4\n5\n", result.stdout())
def test_cols_basic(self): self.assertEqual((('3',),), s('echo 2 3 4') | str.split | cols(1) >= Stdout()) self.assertEqual((('3', '4'),), s('echo 2 3 4') | str.split | cols(1, 2) >= Stdout())
def test_stderr(self): self.assertEqual((4,), s('echo 2; echo 3; echo 4 >&2; echo 5') % int >= Stderr()) self.assertEqual({4}, s('echo 2; echo 3; echo 4 >&2; echo 5') % int >= Stderr(set))
def test_collect(self): self.assertEqual('abc\n', (s('echo abc') > Collect).stdout())
def test_invalid_map(self): self.assertRaises(RuntimeError, lambda: s('echo 2') | 2)
def test_map_over_both_together(self): result = s('echo 2; echo 3; echo 4 >&2') % int % ( lambda x: x * 2) > Collect self.assertEqual([4, 6], result.stdout(raw=True)) self.assertEqual([8], result.stderr(raw=True))
def test_map_over_both_individually(self): result = s('echo 2; echo 3; echo 4 >&2') / int / ( lambda x: x * 2) | int | (lambda x: x * 10) > Collect self.assertEqual([20, 30], result.stdout(raw=True)) self.assertEqual([8], result.stderr(raw=True))
def test_map_over_err(self): result = s('echo 2; echo 3; echo 4 >&2') / int / ( lambda x: x * 2) > Collect self.assertEqual("2\n3\n", result.stdout()) self.assertEqual([8], result.stderr(raw=True))
def test_col_basic(self): self.assertEqual(('3',), s('echo 2 3 4') | str.split | col(1) >= Stdout())
def test_cols_with_type(self): self.assertEqual(((3,),), s('echo 2 3 4') | str.split | cols((1, int)) >= Stdout()) self.assertEqual(((3.0, 4),), s('echo 2 3 4') | str.split | cols((1, float), (2, int)) >= Stdout())
def test_callback_order(self): result = list(s('echo abc >&2; sleep 0.1; echo def')) self.assertEqual([(FD.stderr, 'abc\n'), (FD.stdout, 'def\n')], result)
def test_get_exitcode(self): command = s('echo abc') self.assertRaises(RuntimeError, lambda: command.exitcode)
def test_with_pipeline_mapper_stderr(self): result = s('echo 3; echo 2; echo 4 >&2; echo 0 >&2') / sort() > Collect self.assertEqual("3\n2\n", result.stdout()) self.assertEqual("0\n4\n", result.stderr())
def test_stdout(self): self.assertEqual((2, 3, 5), s('echo 2; echo 3; echo 4 >&2; echo 5') % int >= Stdout()) self.assertEqual({2, 3, 5}, s('echo 2; echo 3; echo 4 >&2; echo 5') % int >= Stdout(set))
def test_head_basic(self): result = s('echo 1; echo 2; echo 3; echo 4; echo 5') | head( 3) > Collect self.assertEqual("1\n2\n3\n", result.stdout())
def test_stdout_stderr(self): self.assertEqual((2, 3, 4, 5), s('echo 2; echo 3; sleep 0.01; echo 4 >&2; sleep 0.01; echo 5') % int >= Both()) self.assertEqual({2, 3, 4, 5}, s('echo 2; echo 3; sleep 0.01; echo 4 >&2; sleep 0.01; echo 5') % int >= Both(set))
def test_col_with_type(self): self.assertEqual((3,), s('echo 2 3 4') | str.split | col(1, int) >= Stdout())