Compare commits
	
		
			17 Commits
		
	
	
		
			tlevine-20
			...
			v0.0.6
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
|  | 87bb9f4660 | ||
|  | caabcd25ff | ||
|  | 8f82cf5aeb | ||
|  | 385ec3fe81 | ||
|  | d4eb99ffb0 | ||
|  | ed939ff39a | ||
|  | d24a71d0d7 | ||
|  | ceae1811e2 | ||
|  | 2ac3a52707 | ||
|  | 2d4de62729 | ||
|  | 3b3ba0e1fa | ||
|  | 1bc9bb2671 | ||
|  | fafd0c1801 | ||
|  | d85b0ee352 | ||
|  | cf793387e9 | ||
|  | 1f79db874b | ||
|  | c770479884 | 
| @@ -1,3 +1,5 @@ | ||||
| Copyright (c) 2013, 2014, 2015, 2016 Thomas Levine | ||||
| Copyright (c) 2014, Michael Klement | ||||
| Copyright (c) 2012, ScraperWiki Limited | ||||
| All rights reserved. | ||||
| 
 | ||||
							
								
								
									
										3
									
								
								HISTORY
									
									
									
									
									
								
							
							
						
						
									
										3
									
								
								HISTORY
									
									
									
									
									
								
							| @@ -14,6 +14,9 @@ Version 0.0.6 | ||||
| * Remove the undocumented, experimental -x flag now that shall exists. | ||||
| * Display version number with the -v flag. | ||||
| * Document why Urchin is called "Urchin" | ||||
| * Update TODO | ||||
| * Support mksh (Change a printf command.) | ||||
| * Make long lines shorter. | ||||
|  | ||||
| These changes are made somewhat separately in the branches "exit-on-fail", | ||||
| "remove-urchin-x", "tap", and "update-readme". They are rebased into one | ||||
|   | ||||
							
								
								
									
										117
									
								
								TODO
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										117
									
								
								TODO
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,117 @@ | ||||
| Things I want | ||||
| ============= | ||||
|  | ||||
| Molly guard | ||||
| ------------- | ||||
| The Molly-guard should be more accepting so that people don't have to use it | ||||
| all the time and thus get used to using it. For example, you shouldn't need to | ||||
| pass -f in this case. | ||||
| https://github.com/creationix/nvm/issues/357 | ||||
|  | ||||
| Test speed | ||||
| ------------- | ||||
| Make tests run faster. | ||||
| https://github.com/bike-barn/hermit/issues/62 | ||||
|  | ||||
| First, easier thing is probably to run tests in parallel. | ||||
|  | ||||
| Second, also easier thing is to tell people to save things to RAM rather than | ||||
| disk whenever they can. | ||||
|  | ||||
| Third, harder thing is to put the test suite in RAM automatically. Maybe the | ||||
| whole test directory, which includes fixtures, gets copied to a tmpfs if one | ||||
| exists. | ||||
|  | ||||
| Hmm or maybe there's a compromise: Tell people to mount /tmp as a tmpfs so | ||||
| that temp files are fast. Maybe allow people to set some other directory as | ||||
| the temporary file place, in case they want a different tmpfs location. | ||||
|  | ||||
| Options | ||||
| ------------- | ||||
| I want long options. For example, there's presently -f and -e. | ||||
| I want to make them -f|--force and -e|--exit. | ||||
|  | ||||
| Environment variables | ||||
| ------------- | ||||
| Do something to make it easier to debug environment variables, because that is | ||||
| often confusing. | ||||
| https://github.com/creationix/nvm/issues/719 | ||||
| https://github.com/creationix/nvm/issues/589 | ||||
|  | ||||
| Documenting that people should run "env" when their tests fail might be good | ||||
| enough. | ||||
|  | ||||
| Licensing and copyright | ||||
| ------------------------ | ||||
| * Reference all owners and years in the Copyright file | ||||
| * Consider copyleft licenses | ||||
| * Add license notices to other files if necessary | ||||
|  | ||||
| Packaging | ||||
| ------------ | ||||
| Package for package managers. | ||||
|  | ||||
| * I want NixOS, of course. | ||||
| * Debian is probably the big one. | ||||
|  | ||||
| Other interesting package managers | ||||
|  | ||||
| * Update the npm package | ||||
| * Homebrew (for Mac) | ||||
|  | ||||
| Windows | ||||
| ---------- | ||||
| Try running Urchin in Windows somehow. Interpreters include | ||||
|  | ||||
| * CygWin (https://www.cygwin.com/) | ||||
| * MSYS (http://mingw.org/wiki/msys) | ||||
| * GNU on Windows (https://github.com/bmatzelle/gow/wiki) | ||||
| * Git for Windows (https://git-scm.com/download/win) | ||||
| * win-bash (http://win-bash.sourceforge.net/) | ||||
|  | ||||
| Consider copyleft licenses | ||||
| ---------- | ||||
| ScraperWiki owns the original version of Urchin (Thomas Levine did the early | ||||
| work as part of his work for ScraperWiki.) and originally licensed it under an | ||||
| MIT-style license. Other people made changes after this original ScraperWiki | ||||
| version. As of January 2016, they are just Thomas Levine (when he wasn't | ||||
| working for ScraperWiki) and Michael Klement. | ||||
|  | ||||
| The original license was MIT just because that's what ScraperWiki put on | ||||
| everything. Should we change the license? | ||||
|  | ||||
| The MIT-style license grants pretty much all rights. It says that you need | ||||
| to attribute when you redistribute source code, but you don't | ||||
| necessarily have to redistribute source code. | ||||
|  | ||||
| A copyleft license adds the restriction that modified versions of the | ||||
| code need to be licensed under the same license. GNU licenses in | ||||
| particular require that source code be released if non-source versions are | ||||
| released, and the different GNU licenses differ in what how the | ||||
| non-source version is defined. (The original, GPL, discusses compiled | ||||
| binaries.) Copyleft doesn't mean anything specific for commercial use. | ||||
|  | ||||
| MIT-licensed code can be modified and then licensed as GPL, because MIT | ||||
| license allows that, but GPL code can't be modified as MIT, because MIT | ||||
| doesn't allow that. And if we get all of the authors to agree on it, we | ||||
| can always add whatever crazy license we want, regardless of what we | ||||
| have already. | ||||
|  | ||||
| The distinction between MIT-style and GNU-something might matter quite little | ||||
| in the case of Urchin. | ||||
|  | ||||
| 1. Urchin is written in an interpreted language (shell), so it might be | ||||
|    hard to distribute usefully without providing the source code. | ||||
| 2. Urchin just runs tests; it doesn't get compiled with the rest of the | ||||
|    code (also because it's in shell). Thus, I think a GPL license on | ||||
|    Urchin wouldn't infect the code being tested. | ||||
|  | ||||
| This is as far as I have gotten with contemplating license changes. For now | ||||
| we're sticking with the original MIT-style license, but it's easy to change | ||||
| licenses later. | ||||
|  | ||||
| Nagios plugins | ||||
| ----------------- | ||||
| It would be cool to run Nagios plugins with Urchin. This is already possible, | ||||
| actually, but it might be worth giving some special thought to it. | ||||
| https://nagios-plugins.org/doc/guidelines.html | ||||
| @@ -2,7 +2,7 @@ | ||||
| # Run urchin in a bunch of different shells, | ||||
| # including a shell that isn't quite POSIX-compatible (zsh) | ||||
|  | ||||
| for shell in dash bash ksh zsh; do | ||||
| for shell in dash bash mksh ksh zsh; do | ||||
|   if which $shell > /dev/null 2> /dev/null; then | ||||
|     echo | ||||
|     echo Running urchin tests in $shell | ||||
|   | ||||
| @@ -169,9 +169,3 @@ It does something similar, but the interface may be more intuitive. | ||||
| ## Alternatives to Urchin | ||||
| Alternatives to Urchin are discussed in | ||||
| [this blog post](https://blog.scraperwiki.com/2012/12/how-to-test-shell-scripts/). | ||||
|  | ||||
| ## Ideas for new features | ||||
|  | ||||
| * Support [Nagios plugins](https://nagios-plugins.org/doc/guidelines.html) | ||||
| * Stop running if a test fails so one can use Urchin as a | ||||
|     [setup framework](https://github.com/tlevine/urchin/issues/16). | ||||
|   | ||||
							
								
								
									
										43
									
								
								urchin
									
									
									
									
									
								
							
							
						
						
									
										43
									
								
								urchin
									
									
									
									
									
								
							| @@ -1,7 +1,16 @@ | ||||
| #!/bin/sh | ||||
|  | ||||
| # Make sure that CDPATH isn't set, as it causes `cd` to behave unpredictably - notably, it can produce output, | ||||
| # which breaks fullpath(). | ||||
| # This file is part of urchin. It is subject to the license terms in the | ||||
| # COPYING file found in the top-level directory of this distribution or at | ||||
| # https://raw.githubusercontent.com/tlevine/urchin/master/COPYING | ||||
|  | ||||
| # No part of urchin, including this file, may be copied, modified, propagated, | ||||
| # or distributed except according to the terms contained in the COPYING file. | ||||
|  | ||||
|  | ||||
|  | ||||
| # Make sure that CDPATH isn't set, as it causes `cd` to behave unpredictably - | ||||
| # notably, it can produce output, which breaks fullpath(). | ||||
| unset CDPATH | ||||
|  | ||||
| # Urchin version number | ||||
| @@ -16,7 +25,9 @@ fullpath() { | ||||
|  | ||||
| indent() { | ||||
|   level="$1" | ||||
|   printf "%$((2 * ${level}))s" | ||||
|   if test "$level" -gt 0; then | ||||
|     printf "%$((2 * ${level}))s" | ||||
|   fi | ||||
| } | ||||
|  | ||||
| recurse() { | ||||
| @@ -131,7 +142,10 @@ recurse() { | ||||
|           # On fail, print a red '✗' | ||||
|           printf '\033[31m✗ \033[0m' | ||||
|           printf '%s\n' "${potential_test}" | ||||
|           printf '\033[31m' # Print output captured from failed test in red. | ||||
|  | ||||
|           # Print output captured from failed test in red. | ||||
|           printf '\033[31m' | ||||
|  | ||||
|           cat "$stdout_file" | ||||
|           printf '\033[0m' | ||||
|         ;; | ||||
| @@ -149,8 +163,13 @@ recurse() { | ||||
| } | ||||
|  | ||||
| has_sh_or_no_shebang_line() { | ||||
|   head -n 1 "$1" | grep -vqE '^#!' && return 0 # no shebang line at all | ||||
|   head -n 1 "$1" | grep -qE '^#![[:blank:]]*/bin/sh($|[[:blank:]])' && return 0  # shebang line is '#!/bin/sh' or legal variations thereof | ||||
|   # no shebang line at all | ||||
|   head -n 1 "$1" | grep -vqE '^#!' && return 0 | ||||
|  | ||||
|   # shebang line is '#!/bin/sh' or legal variations thereof | ||||
|   head -n 1 "$1" | grep -qE '^#![[:blank:]]*/bin/sh($|[[:blank:]])' && | ||||
|     return 0   | ||||
|  | ||||
|   return 1 | ||||
| } | ||||
|  | ||||
| @@ -225,7 +244,10 @@ urchin_go() { | ||||
|     echo "Done, took $elapsed $(plural second $elapsed)." | ||||
|     printf '%s\n' "$passed $(plural test "$passed") passed." | ||||
|     printf '%s\n' "$skipped $(plural test "$skipped") skipped." | ||||
|     [ $failed -gt 0 ] && printf '\033[31m' || printf '\033[32m' # If tests failed, print the message in red, otherwise in green. | ||||
|  | ||||
|     # If tests failed, print the message in red, otherwise in green. | ||||
|     [ $failed -gt 0 ] && printf '\033[31m' || printf '\033[32m' | ||||
|  | ||||
|     printf '%s\n' "$failed $(plural test "$failed") failed." | ||||
|     printf '\033[m' | ||||
|   fi | ||||
| @@ -257,8 +279,11 @@ do | ||||
|         -s) | ||||
|           shift | ||||
|           shell_for_sh_tests=$1 | ||||
|           which "$shell_for_sh_tests" >/dev/null || { echo "Cannot find specified shell: '$shell_for_sh_tests'" >&2; urchin_help >&2; exit 2; } | ||||
|           ;; | ||||
|           which "$shell_for_sh_tests" > /dev/null || { | ||||
|             echo "Cannot find specified shell: '$shell_for_sh_tests'" >&2 | ||||
|             urchin_help >&2 | ||||
|             exit 2 | ||||
|           } ;; | ||||
|         -t) tap_format=true;; | ||||
|         -h|--help) urchin_help | ||||
|           exit 0;; | ||||
|   | ||||
							
								
								
									
										
											BIN
										
									
								
								urchin_test_on_msys64_1.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								urchin_test_on_msys64_1.png
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							| After Width: | Height: | Size: 99 KiB | 
							
								
								
									
										
											BIN
										
									
								
								urchin_test_on_msys64_2.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								urchin_test_on_msys64_2.png
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							| After Width: | Height: | Size: 115 KiB | 
		Reference in New Issue
	
	Block a user