2"""Run transactional direct-program initializer context checks under eval."""
3from pathlib import Path
9root = Path(__file__).resolve().parent.parent
10parser = argparse.ArgumentParser(description=__doc__)
11parser.add_argument('--lib', default=str(root / 'jibb-dev/lib/jibb.hoon'))
12args = parser.parse_args()
15 text = (root / 'tests/lib' / name).read_text()
16 return text[text.index('\n|%\n') + 1:]
18names = ('initializer', 'initializer-consumer', 'initializer-unfaced',
19 'initializer-error', 'initializer-earlier', 'initializer-model',
20 'initializer-message', 'initializer-generic', 'initializer-missing',
21 'initializer-tag', 'initializer-no-main', 'initializer-subs')
22expression = ('=/ jibb .\n=/ prelude=@t prelude-text\n'
23 '=/ internal=@t internal-text\n' +
24 ''.join('=/ ' + name + '=wain (to-wain:format ' + name + '-text)\n'
26 '=/ suite\n' + body('jibb-program-init.hoon') +
27 '\n=/ negatives=(list @t)\n :~ (text:suite initializer-error)\n'
28 ' (text:suite initializer-earlier)\n (text:suite initializer-model)\n'
29 ' (text:suite initializer-message)\n (text:suite initializer-generic)\n'
30 ' (text:suite initializer-missing)\n (text:suite initializer-tag)\n'
31 ' (text:suite initializer-no-main)\n (text:suite initializer-subs)\n ==\n'
32 '=/ failures=(list tape) (program-init-errors:suite prelude internal (text:suite initializer) (text:suite initializer-consumer) (text:suite initializer-unfaced) negatives)\n'
33 '^- @t\n?~ failures \'program initializer checks passed\'\n'
34 '(of-wain:format (turn failures crip))\n')
35with tempfile.TemporaryDirectory(prefix='jibb-program-init-') as tmp:
36 program = Path(tmp) / 'program-init.hoon'
37 program.write_text(expression)
38 command = [str(root / 'tools/hoon'), '--lib', args.lib, '--raw', '-f', str(program),
39 '--cord', 'prelude-text=' + str(root / 'jibb-dev/lib/jibb/prelude.jibb'),
40 '--cord', 'internal-text=' + str(root / 'jibb-dev/lib/jibb/internal.jibb')]
42 command += ['--cord', name + '-text=' + str(root / 'tests/type-program-main' / (name + '.txt'))]
43 result = subprocess.run(command, stdout=subprocess.PIPE)
45 sys.exit(result.returncode)
46if result.stdout != b'program initializer checks passed\n':
47 sys.stderr.buffer.write(result.stdout)
49print('transactional direct-program initializer context guards passed')
keysesc to close
- j k
- move down, up
- enter
- open
- esc
- back, or up a level
- 1 2 3 4
- readme, files, commits, refs
- /
- filter
- y
- copy the clone command
- c
- compare the chosen commit with another (or shift-click both)
- ?
- show or hide this list