def test_no_match(self): """A test for a file that doesn't exist.""" ui = mock.Mock() with temporary_directory() as d: cmd = envelope.AttachCommand(path=os.path.join(d, 'doesnt-exist')) cmd.apply(ui) ui.notify.assert_called()
def test_single_path(self): """A test for an existing single path.""" ui = mock.Mock() with temporary_directory() as d: testfile = os.path.join(d, 'foo') with open(testfile, 'w') as f: f.write('foo') cmd = envelope.AttachCommand(path=testfile) cmd.apply(ui) ui.current_buffer.envelope.attach.assert_called_with(testfile)
def test_glob(self): """A test using a glob.""" ui = mock.Mock() with temporary_directory() as d: testfile1 = os.path.join(d, 'foo') testfile2 = os.path.join(d, 'far') for t in [testfile1, testfile2]: with open(t, 'w') as f: f.write('foo') cmd = envelope.AttachCommand(path=os.path.join(d, '*')) cmd.apply(ui) ui.current_buffer.envelope.attach.assert_has_calls( [mock.call(testfile1), mock.call(testfile2)], any_order=True)
def test_user(self): """A test for an existing single path prefaced with ~/.""" ui = mock.Mock() with temporary_directory() as d: # This mock replaces expanduser to replace "~/" with a path to the # temporary directory. This is easier and more reliable than # relying on changing an environment variable (like HOME), since it # doesn't rely on CPython implementation details. with mock.patch('alot.commands.os.path.expanduser', lambda x: os.path.join(d, x[2:])): testfile = os.path.join(d, 'foo') with open(testfile, 'w') as f: f.write('foo') cmd = envelope.AttachCommand(path='~/foo') cmd.apply(ui) ui.current_buffer.envelope.attach.assert_called_with(testfile)