Restructuring tests
This commit is contained in:
parent
b852e514d0
commit
dbc22698e2
@ -1,21 +1,21 @@
|
|||||||
#!/usr/bin/bash
|
#!/usr/bin/bash
|
||||||
|
|
||||||
# File: HelloWorld.bash
|
# File: HelloWorld.bash
|
||||||
#
|
#
|
||||||
# Description: This file exemplifies printing 'Hello world!' in bash.
|
# Description: This file exemplifies printing 'Hello, World!' in bash.
|
||||||
#
|
#
|
||||||
# Package: AniNIX/HelloWorld
|
# Package: AniNIX/HelloWorld
|
||||||
# Copyright: WTFPL
|
# Copyright: WTFPL
|
||||||
#
|
#
|
||||||
# Author: DarkFeather <ircs://aninix.net:6697/DarkFeather>
|
# Author: DarkFeather <ircs://aninix.net:6697/DarkFeather>
|
||||||
|
|
||||||
### String to print
|
### String to print
|
||||||
export _helloWorld="Hello world!"
|
export _helloWorld="Hello, World!"
|
||||||
|
|
||||||
|
|
||||||
### Prints 'Hello world!'
|
### Prints 'Hello, World!'
|
||||||
### </summary>
|
### </summary>
|
||||||
function main() {
|
function main() {
|
||||||
printf "$_helloWorld""\n"
|
printf "$_helloWorld""\n"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
12
HelloWorld.c
12
HelloWorld.c
@ -2,19 +2,19 @@
|
|||||||
|
|
||||||
/*
|
/*
|
||||||
* File: HelloWorld.c
|
* File: HelloWorld.c
|
||||||
*
|
*
|
||||||
* Description: This file exemplifies printing 'Hello world!' in C.
|
* Description: This file exemplifies printing 'Hello, World!' in C.
|
||||||
*
|
*
|
||||||
* Package: AniNIX/HelloWorld
|
* Package: AniNIX/HelloWorld
|
||||||
* Copyright: WTFPL
|
* Copyright: WTFPL
|
||||||
*
|
*
|
||||||
* Author: DarkFeather <ircs://aninix.net:6697/DarkFeather>
|
* Author: DarkFeather <ircs://aninix.net:6697/DarkFeather>
|
||||||
*/
|
*/
|
||||||
|
|
||||||
static char * message = "Hello world!";
|
static char * message = "Hello, World!";
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Prints 'Hello world!'
|
/// Prints 'Hello, World!'
|
||||||
/// </summary>
|
/// </summary>
|
||||||
void HelloWorld() {
|
void HelloWorld() {
|
||||||
printf("%s\n",message);
|
printf("%s\n",message);
|
||||||
|
@ -2,12 +2,12 @@ using System;
|
|||||||
|
|
||||||
/*
|
/*
|
||||||
* File: HelloWorld.cs
|
* File: HelloWorld.cs
|
||||||
*
|
*
|
||||||
* Description: This file exemplifies printing 'Hello world!' in C#.
|
* Description: This file exemplifies printing 'Hello, World!' in C#.
|
||||||
*
|
*
|
||||||
* Package: AniNIX/HelloWorld
|
* Package: AniNIX/HelloWorld
|
||||||
* Copyright: WTFPL
|
* Copyright: WTFPL
|
||||||
*
|
*
|
||||||
* Author: DarkFeather <ircs://aninix.net:6697/DarkFeather>
|
* Author: DarkFeather <ircs://aninix.net:6697/DarkFeather>
|
||||||
*/
|
*/
|
||||||
|
|
||||||
@ -17,12 +17,12 @@ namespace AniNIX {
|
|||||||
public sealed class HelloWorld {
|
public sealed class HelloWorld {
|
||||||
|
|
||||||
// String to print
|
// String to print
|
||||||
private static String _helloWorld="Hello world!";
|
private static String _helloWorld="Hello, World!";
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Print 'Hello world!'
|
/// Print 'Hello, World!'
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public static void PrintHelloWorld() {
|
public static void PrintHelloWorld() {
|
||||||
Console.WriteLine(_helloWorld);
|
Console.WriteLine(_helloWorld);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -2,30 +2,30 @@ import java.lang.System;
|
|||||||
|
|
||||||
/*
|
/*
|
||||||
* File: HelloWorld.java
|
* File: HelloWorld.java
|
||||||
*
|
*
|
||||||
* Description: This file exemplifies printing 'Hello world!' in Java.
|
* Description: This file exemplifies printing 'Hello, World!' in Java.
|
||||||
*
|
*
|
||||||
* Package: AniNIX/HelloWorld
|
* Package: AniNIX/HelloWorld
|
||||||
* Copyright: WTFPL
|
* Copyright: WTFPL
|
||||||
*
|
*
|
||||||
* Author: DarkFeather <ircs://aninix.net:6697/DarkFeather>
|
* Author: DarkFeather <ircs://aninix.net:6697/DarkFeather>
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/// This class is used exemplify coding standard in Java
|
/// This class is used exemplify coding standard in Java
|
||||||
public class HelloWorld {
|
public class HelloWorld {
|
||||||
|
|
||||||
// String to print
|
// String to print
|
||||||
private static String _helloWorld = "Hello world!";
|
private static String _helloWorld = "Hello, World!";
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Print 'Hello world!'
|
/// Print 'Hello, World!'
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public static void PrintHelloWorld() {
|
public static void PrintHelloWorld() {
|
||||||
System.out.println(_helloWorld);
|
System.out.println(_helloWorld);
|
||||||
}
|
}
|
||||||
|
|
||||||
/// MAIN
|
/// MAIN
|
||||||
public static void main(String[] args) {
|
public static void main(String[] args) {
|
||||||
PrintHelloWorld();
|
PrintHelloWorld();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,22 +1,22 @@
|
|||||||
<?php
|
<?php
|
||||||
|
|
||||||
# File: HelloWorld.php
|
# File: HelloWorld.php
|
||||||
#
|
#
|
||||||
# Description: This file exemplifies printing 'Hello world!' in PHP.
|
# Description: This file exemplifies printing 'Hello, World!' in PHP.
|
||||||
#
|
#
|
||||||
# Package: AniNIX/HelloWorld
|
# Package: AniNIX/HelloWorld
|
||||||
# Copyright: WTFPL
|
# Copyright: WTFPL
|
||||||
#
|
#
|
||||||
# Author: DarkFeather <ircs://aninix.net:6697/DarkFeather>
|
# Author: DarkFeather <ircs://aninix.net:6697/DarkFeather>
|
||||||
|
|
||||||
|
|
||||||
### String to print
|
### String to print
|
||||||
$_helloWorld="Hello world!";
|
$_helloWorld="Hello, World!";
|
||||||
|
|
||||||
### <summary>
|
### <summary>
|
||||||
### Prints 'Hello world!'
|
### Prints 'Hello, World!'
|
||||||
### </summary>
|
### </summary>
|
||||||
function PrintHelloWorld() {
|
function PrintHelloWorld() {
|
||||||
global $_helloWorld;
|
global $_helloWorld;
|
||||||
echo $_helloWorld."\n";
|
echo $_helloWorld."\n";
|
||||||
|
|
||||||
|
@ -1,19 +1,19 @@
|
|||||||
#!/usr/bin/perl
|
#!/usr/bin/perl
|
||||||
|
|
||||||
# File: HelloWorld.pl
|
# File: HelloWorld.pl
|
||||||
#
|
#
|
||||||
# Description: This file exemplifies printing 'Hello world!' in perl.
|
# Description: This file exemplifies printing 'Hello, World!' in perl.
|
||||||
#
|
#
|
||||||
# Package: AniNIX/HelloWorld
|
# Package: AniNIX/HelloWorld
|
||||||
# Copyright: WTFPL
|
# Copyright: WTFPL
|
||||||
#
|
#
|
||||||
# Author: DarkFeather <ircs://aninix.net:6697/DarkFeather>
|
# Author: DarkFeather <ircs://aninix.net:6697/DarkFeather>
|
||||||
|
|
||||||
### <summary>
|
### <summary>
|
||||||
### Prints 'Hello world!'
|
### Prints 'Hello, World!'
|
||||||
### </summary>
|
### </summary>
|
||||||
sub PrintHelloWorld {
|
sub PrintHelloWorld {
|
||||||
print "Hello world!\n"
|
print "Hello, World!\n"
|
||||||
}
|
}
|
||||||
|
|
||||||
### MAIN
|
### MAIN
|
||||||
|
@ -1,21 +1,21 @@
|
|||||||
#!/usr/bin/env python3
|
#!/usr/bin/env python3
|
||||||
|
|
||||||
# File: HelloWorld.py
|
# File: HelloWorld.py
|
||||||
#
|
#
|
||||||
# Description: This file exemplifies printing 'Hello world!' in python.
|
# Description: This file exemplifies printing 'Hello, World!' in python.
|
||||||
#
|
#
|
||||||
# Package: AniNIX/HelloWorld
|
# Package: AniNIX/HelloWorld
|
||||||
# Copyright: WTFPL
|
# Copyright: WTFPL
|
||||||
#
|
#
|
||||||
# Author: DarkFeather <ircs://aninix.net:6697/DarkFeather>
|
# Author: DarkFeather <ircs://aninix.net:6697/DarkFeather>
|
||||||
|
|
||||||
### String to print
|
### String to print
|
||||||
_helloWorld='Hello world!'
|
_helloWorld='Hello, World!'
|
||||||
|
|
||||||
### <summary>
|
### <summary>
|
||||||
### Prints 'Hello world!'
|
### Prints 'Hello, World!'
|
||||||
### </summary>
|
### </summary>
|
||||||
def PrintHelloWorld():
|
def PrintHelloWorld():
|
||||||
print(_helloWorld)
|
print(_helloWorld)
|
||||||
|
|
||||||
### Main
|
### Main
|
||||||
|
4
Makefile
4
Makefile
@ -28,8 +28,8 @@ checkperm:
|
|||||||
c: HelloWorld.c /usr/bin/gcc
|
c: HelloWorld.c /usr/bin/gcc
|
||||||
gcc -o HelloWorld HelloWorld.c
|
gcc -o HelloWorld HelloWorld.c
|
||||||
|
|
||||||
java: HelloWorld.java /usr/lib/jvm/java-19-openjdk/bin/javac /usr/lib/jvm/java-19-openjdk/bin/java
|
java: HelloWorld.java /usr/bin/javac /usr/bin/java
|
||||||
/usr/lib/jvm/java-19-openjdk/bin/javac HelloWorld.java
|
/usr/bin/javac HelloWorld.java
|
||||||
|
|
||||||
bash: HelloWorld.bash /usr/bin/bash
|
bash: HelloWorld.bash /usr/bin/bash
|
||||||
#bash HelloWorld.bash
|
#bash HelloWorld.bash
|
||||||
|
@ -1,11 +1,15 @@
|
|||||||
This project is tracking basic standards of reference for getting started with various programming languages. That standard has always been a program that prints "Hello world!"
|
This project is tracking basic standards of reference for getting started with various programming languages. That standard has always been a program that prints "Hello, World!"
|
||||||
|
|
||||||
# Etymology
|
# Etymology
|
||||||
A program called ["Hello, World!"](https://en.wikipedia.org/wiki/%22Hello,_World!%22_program) has been a mainstay of computing for a long time, with some thinking it began with BCPL in 1967. Regardless, it is a common teaching tool for new programmers, and it is a way for a language to announce itself to the world.
|
A program called ["Hello, World!"](https://en.wikipedia.org/wiki/%22Hello,_World!%22_program) has been a mainstay of computing for a long time, with some thinking it began with BCPL in 1967. Regardless, it is a common teaching tool for new programmers, and it is a way for a language to announce itself to the world.
|
||||||
|
|
||||||
# Relevant Files and Software
|
# Relevant Files and Software
|
||||||
|
|
||||||
The relevant software for this is any executing engine for a language included in the project. For languages like C, they compile into local executables -- languages like Java & C# create compiled entities that need to execute within their runtime. Others, like Python & PHP, don't compile but execute within their respective binaries. Check the [test_unit.py](/AniNIX/HelloWorld/src/branch/main/tests/test_unit.py) file for more details on invocation.
|
The relevant software for this is any executing engine for a language included in the project. For languages like C, they compile into local executables -- languages like Java & C# create compiled entities that need to execute within their runtime. Others, like Python & PHP, don't compile but execute within their respective binaries. Check the [test units](/AniNIX/HelloWorld/src/branch/main/tests) file for more details on invocation.
|
||||||
|
|
||||||
|
## Java
|
||||||
|
|
||||||
|
Per [ArchWiki's notes on Java](https://wiki.archlinux.org/title/Java#Installation), you need to use `archlinux-java` to set your java environment. We typically use the latest Java available.
|
||||||
|
|
||||||
# Available Clients
|
# Available Clients
|
||||||
|
|
||||||
|
22
precommit-hooks/coverage.bash
Normal file
22
precommit-hooks/coverage.bash
Normal file
@ -0,0 +1,22 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
#
|
||||||
|
# Find that we have tests for each file.
|
||||||
|
|
||||||
|
retcode=0
|
||||||
|
for language in `ls -1 ./HelloWorld.* | cut -f 3 -d '.'`; do
|
||||||
|
|
||||||
|
# Ensure there's a test file.
|
||||||
|
if [ ! -f tests/test_"${language}".py ]; then
|
||||||
|
echo "${language^} is missing a test file."
|
||||||
|
retcode=1
|
||||||
|
else
|
||||||
|
# Ensure that each test is defined.
|
||||||
|
if ! grep "^def test_${language}():$" tests/test_"${language}".py &>/dev/null; then
|
||||||
|
echo "${language^} doesn't have the right test definition."
|
||||||
|
retcode=1
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
done
|
||||||
|
|
||||||
|
exit $retcode
|
@ -7,7 +7,7 @@ def checkOutput(output):
|
|||||||
Ensure hello world is in string.
|
Ensure hello world is in string.
|
||||||
return: whether hello world is present
|
return: whether hello world is present
|
||||||
"""
|
"""
|
||||||
return output == 'Hello world!\n'
|
return output == 'Hello, World!\n'
|
||||||
|
|
||||||
def runCommand(command):
|
def runCommand(command):
|
||||||
"""
|
"""
|
||||||
@ -16,12 +16,11 @@ def runCommand(command):
|
|||||||
return: Whether retcode is 0
|
return: Whether retcode is 0
|
||||||
"""
|
"""
|
||||||
fh = os.popen(command, mode='r', buffering=-1)
|
fh = os.popen(command, mode='r', buffering=-1)
|
||||||
output = fh.read()
|
fh.read()
|
||||||
retcode = fh.close()
|
retcode = fh.close()
|
||||||
assert retcode == None
|
return retcode == None
|
||||||
|
|
||||||
|
def runCommandAndCheckOutput(command):
|
||||||
def runCommandAndOutputCheck(command):
|
|
||||||
"""
|
"""
|
||||||
Define a function to run a shell command and ensure output is correct
|
Define a function to run a shell command and ensure output is correct
|
||||||
param command: command
|
param command: command
|
||||||
@ -30,4 +29,4 @@ def runCommandAndOutputCheck(command):
|
|||||||
fh = os.popen(command, mode='r', buffering=-1)
|
fh = os.popen(command, mode='r', buffering=-1)
|
||||||
output = fh.read()
|
output = fh.read()
|
||||||
retcode = fh.close()
|
retcode = fh.close()
|
||||||
assert retcode == None and CheckOutput(output)
|
return retcode == None and checkOutput(output)
|
||||||
|
6
tests/test_bash.py
Normal file
6
tests/test_bash.py
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
import os
|
||||||
|
import shutil
|
||||||
|
from tests.global_fns import *
|
||||||
|
|
||||||
|
def test_bash():
|
||||||
|
runCommandAndCheckOutput("./HelloWorld.bash")
|
@ -1,24 +1,6 @@
|
|||||||
import os
|
import os
|
||||||
import re
|
|
||||||
import shutil
|
import shutil
|
||||||
|
|
||||||
from tests.global_fns import *
|
from tests.global_fns import *
|
||||||
|
|
||||||
def test_compile_c():
|
|
||||||
fh = os.popen("gcc -o HelloWorld ./HelloWorld.c", mode='r', buffering=-1)
|
|
||||||
output = fh.read()
|
|
||||||
retcode = fh.close()
|
|
||||||
assert retcode == None
|
|
||||||
|
|
||||||
|
|
||||||
def test_c():
|
def test_c():
|
||||||
fh = os.popen("./HelloWorld", mode='r', buffering=-1)
|
runCommandAndCheckOutput("./HelloWorld")
|
||||||
output = fh.read()
|
|
||||||
retcode = fh.close()
|
|
||||||
assert retcode == None and checkOutput(output)
|
|
||||||
|
|
||||||
def test_c_cleanup():
|
|
||||||
fh = os.popen("rm ./HelloWorld", mode='r', buffering=-1)
|
|
||||||
output = fh.read()
|
|
||||||
retcode = fh.close()
|
|
||||||
assert retcode == None
|
|
||||||
|
6
tests/test_cs.py
Normal file
6
tests/test_cs.py
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
import os
|
||||||
|
import shutil
|
||||||
|
from tests.global_fns import *
|
||||||
|
|
||||||
|
def test_cs():
|
||||||
|
runCommandAndCheckOutput("mono ./HelloWorld.exe")
|
6
tests/test_java.py
Normal file
6
tests/test_java.py
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
import os
|
||||||
|
import shutil
|
||||||
|
from tests.global_fns import *
|
||||||
|
|
||||||
|
def test_java():
|
||||||
|
runCommandAndCheckOutput("/usr/bin/java HelloWorld")
|
6
tests/test_php.py
Normal file
6
tests/test_php.py
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
import os
|
||||||
|
import shutil
|
||||||
|
from tests.global_fns import *
|
||||||
|
|
||||||
|
def test_php():
|
||||||
|
runCommandAndCheckOutput("php ./HelloWorld.php")
|
6
tests/test_pl.py
Normal file
6
tests/test_pl.py
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
import os
|
||||||
|
import shutil
|
||||||
|
from tests.global_fns import *
|
||||||
|
|
||||||
|
def test_pl():
|
||||||
|
runCommandAndCheckOutput("")
|
6
tests/test_py.py
Normal file
6
tests/test_py.py
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
import os
|
||||||
|
import shutil
|
||||||
|
from tests.global_fns import *
|
||||||
|
|
||||||
|
def test_py():
|
||||||
|
runCommandAndCheckOutput("./HelloWorld.py")
|
@ -1,63 +0,0 @@
|
|||||||
import os
|
|
||||||
import re
|
|
||||||
import shutil
|
|
||||||
|
|
||||||
def CheckOutput(output):
|
|
||||||
return output == 'Hello world!\n'
|
|
||||||
|
|
||||||
def test_make():
|
|
||||||
print(os.getcwd())
|
|
||||||
fh = os.popen("/bin/bash -c 'make compile'", mode='r', buffering=-1)
|
|
||||||
output = fh.read()
|
|
||||||
retcode = fh.close()
|
|
||||||
assert retcode == None
|
|
||||||
|
|
||||||
def test_c():
|
|
||||||
print(os.getcwd())
|
|
||||||
fh = os.popen("./HelloWorld", mode='r', buffering=-1)
|
|
||||||
output = fh.read()
|
|
||||||
retcode = fh.close()
|
|
||||||
assert retcode == None and CheckOutput(output)
|
|
||||||
|
|
||||||
def test_cs():
|
|
||||||
print(os.getcwd())
|
|
||||||
fh = os.popen("mono ./HelloWorld.exe", mode='r', buffering=-1)
|
|
||||||
output = fh.read()
|
|
||||||
retcode = fh.close()
|
|
||||||
assert retcode == None and CheckOutput(output)
|
|
||||||
|
|
||||||
def test_java():
|
|
||||||
print(os.getcwd())
|
|
||||||
fh = os.popen("/usr/lib/jvm/java-19-openjdk/bin/java HelloWorld", mode='r', buffering=-1)
|
|
||||||
output = fh.read()
|
|
||||||
retcode = fh.close()
|
|
||||||
assert retcode == None and CheckOutput(output)
|
|
||||||
|
|
||||||
def test_bash():
|
|
||||||
print(os.getcwd())
|
|
||||||
fh = os.popen("./HelloWorld.bash", mode='r', buffering=-1)
|
|
||||||
output = fh.read()
|
|
||||||
retcode = fh.close()
|
|
||||||
assert retcode == None and CheckOutput(output)
|
|
||||||
|
|
||||||
def test_perl():
|
|
||||||
print(os.getcwd())
|
|
||||||
fh = os.popen("./HelloWorld.pl", mode='r', buffering=-1)
|
|
||||||
output = fh.read()
|
|
||||||
retcode = fh.close()
|
|
||||||
assert retcode == None and CheckOutput(output)
|
|
||||||
|
|
||||||
def test_php():
|
|
||||||
print(os.getcwd())
|
|
||||||
fh = os.popen("php ./HelloWorld.php", mode='r', buffering=-1)
|
|
||||||
output = fh.read()
|
|
||||||
retcode = fh.close()
|
|
||||||
assert retcode == None and CheckOutput(output)
|
|
||||||
|
|
||||||
def test_python():
|
|
||||||
print(os.getcwd())
|
|
||||||
fh = os.popen("./HelloWorld.py", mode='r', buffering=-1)
|
|
||||||
output = fh.read()
|
|
||||||
retcode = fh.close()
|
|
||||||
assert retcode == None and CheckOutput(output)
|
|
||||||
|
|
Loading…
Reference in New Issue
Block a user